home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 47 / Amiga Format AFCD47 (Issue 131, Xmas 1999).iso / -in_the_mag- / workbench / scanners / abaton / readme.txt < prev    next >
Text File  |  1999-10-11  |  5KB  |  126 lines

  1. ---------------------------------------------------------------
  2. Abaton SCAN 300/FB (Ricoh IS30-M2) flatbed scanner controller.
  3. ---------------------------------------------------------------
  4. By Chris Sterne (chris_sterne@panam.wimsey.com), March 27, 1999
  5. ---------------------------------------------------------------
  6.  
  7. ------------
  8. Introduction
  9. ------------
  10.  
  11. This project was undertaken after obtaining an Abaton SCAN 300/FB
  12. (based on a Ricoh IS30-M2 OEM mechanism) flatbed scanner that was
  13. missing its SCSI interface "black box".  The scanner's interface
  14. is similar to that used by Centronics-type printers, but some
  15. differences required the reconditioning of signals.
  16.  
  17. -------------------------------------------
  18. Scanner controller software: scan directory
  19. -------------------------------------------
  20.  
  21. This directory contains a CLI-only scanner control program "Scan",
  22. including its source code.  Type "Scan" without any arguments,
  23. or "Scan ?", to see the program instructions.
  24.  
  25. --------------------------------------
  26. Interface: interface.iff, waveform.iff
  27. --------------------------------------
  28.  
  29. These files are a schematic of an Amiga parallel port to Abaton
  30. parallel port interface and timing waveforms for access cycles.
  31. This interface was necessary for the following reasons:
  32.  
  33. - The Amiga STROBE# signal is always an output, but the scanner will
  34.   drive STROBE# during Read cycles, causing contention on the Amiga's
  35.   STROBE#.  This is prevented by isolating the two signals.
  36.   
  37. - During Read cycles, the scanner presents data at the time it pulses
  38.   STROBE#.  Even if the scanner STROBE# signal were to be connected to
  39.   the Amiga's ACK# to generate an interrupt, the scanner data will most
  40.   likely be gone by the time the Amiga can read it.  This is solved by
  41.   latching the data and asserting BUSY.  When the Amiga sees BUSY
  42.   asserted, it will know that data is available.  The assertion of BUSY
  43.   will also tell the scanner to wait until the data is read.  After the
  44.   data is read, the Amiga will generate a STROBE# pulse to reset the
  45.   latch.
  46.  
  47. - The scanner needs a signal to tell it when to begin sending data.
  48.   This is solved by changing the SEL input to an output, and renaming
  49.   it to READ#.  The default state is negated, used when writing to the
  50.   scanner.
  51.  
  52. Using standard DIP packages, the entire interface will fit within the
  53. shell of a 36-pin connector on a parallel cable.
  54.  
  55. WARNINGS:
  56.  
  57. - According to the Amiga hardware manual, the SEL (being used as READ#)
  58.   signal is shared with the Ring Indicator (RI) serial port signal in
  59.   A2000 and A500 systems.  The effect of this sharing on the use of the
  60.   READ# signal as an output is not known.
  61.   
  62. - The Abaton scanner must have been modified at the factory to supply
  63.   5 volts on pin 35 and 36, allowing a SCSI interface box to be added.
  64.   The parallel port interface draws power from the scanner.
  65.  
  66. --------------------------------
  67. Scanner 36-pin connector signals
  68. --------------------------------
  69.  
  70. (Pin 1) STROBE#, active LOW, Bidirectional, internal pullup.
  71.   During Write cycles, STROBE# is an Input, indicating that valid data
  72.   available.  During Read cycles, STROBE# is an Output, indicating that
  73.   valid data is available.
  74.  
  75. (Pins 2 to 9) Data[0:7], Bidirectional, internal pullups.
  76.   This bus is normally an Input, but becomes an Output if the scanner
  77.   asserts ACK# when READ# is asserted.
  78.  
  79. (Pin 10) ACK#, active LOW, Output, internal pullup.
  80.   This signal, which is always an Output, is pulsed to acknowledge data
  81.   written to the scanner.  After receiving any command that will return
  82.   data, ACK# will be returned for the last byte of the command sequence
  83.   after all the data has been read, or after a timeout delay of 15 seconds.
  84.  
  85. (Pin 11) BUSY, active HIGH, Bidirectional, internal pullup.
  86.   BUSY will be asserted after each byte is written to the scanner, then
  87.   negated when ACK# is returned.  During Read cycles, BUSY is floated high,
  88.   allowing it to be driven by an external source to control the data flow.
  89.  
  90. (Pins 12, 13, 32) ERROR, active HIGH, Output, internal pullup.
  91.   When asserted, an error code is available to be read from the scanner.
  92.   Internal jumpers (J7, J6, J5) select which pin is driven with the ERROR
  93.   signal.  The default appears to be pin 15 (J5 installed, J6 and J7
  94.   removed).
  95.  
  96. (Pins 14, 15) READ#, active LOW, Input, internal pullup.
  97.   When negated, data may be written to the scanner.  When asserted, data
  98.   may be read from the scanner.  Internal jumpers (J3 an J4) select the
  99.   source pin of READ#.  The default appears to be pin 15 (J3 installed,
  100.   J4 removed).
  101.  
  102. (Pins 16, 18, 33, 34) Unused.
  103.  
  104. (Pins 17, 19 to 30) Ground.
  105.  
  106. (Pin 31) RESET#, active LOW, Input, internal pullup.
  107.   When asserted, the scanner will be reset to its power-up state.
  108.  
  109. (Pins 35, 36) +5v.
  110.  
  111. ---------------------------------
  112. Command code sequences: codes.txt
  113. ---------------------------------
  114.  
  115. This file contains the scanner's command codes.  These were obtained by
  116. disassembling the scanner's operating system.  The purpose of some are
  117. currently unknown, but the necessary ones (those that make the scanner
  118. scan) are known.
  119.  
  120. ------------------------------------------
  121. FinalWriter ARexx script: FWImport_CD.rexx
  122. ------------------------------------------
  123.  
  124. This ARexx script can be run within the FinalWriter word processor to
  125. automatically scan a business card and import the image.
  126.